package org.cqust.backend.dto.response.mission;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.Lob;
import lombok.Data;
import org.cqust.backend.entity.mission.MissionStepVersion;

/**
 * 步骤版本的数据传输对象，用于表示任务步骤版本的信息。
 */
@Data
public class StepVersionDTO {
    /**
     * 步骤版本的唯一标识符。
     */
    @Schema(description = "步骤版本的唯一标识符")
    private Long id;

    /**
     * 任务的类型。
     * 这个字段用于标识任务的类型，如“TopologyCheck”、“CommandCheck”等。
     */
    @Schema(description = "任务的类型",example = "TopologyCheck",requiredMode = Schema.RequiredMode.REQUIRED)
    private String taskType;

    /**
     * 步骤版本的标题。
     */
    @Schema(description = "步骤版本的标题")
    private String title;

    /**
     * 步骤版本的描述。
     */
    @Schema(description = "步骤版本的描述")
    private String description;

    /**
     * 步骤版本的分数。
     */
    @Schema(description = "步骤版本的分数")
    private Float score;
    /**
     * 步骤的配置信息。
     * 这个字段用于存储步骤的配置信息，如检测内容等。
     */
    @Lob
    @Schema(description = "步骤的配置信息", requiredMode = Schema.RequiredMode.REQUIRED)
    private String configXml;

    /**
     * 步骤版本的顺序。
     */
    @Schema(description = "步骤版本的顺序")
    private Long order;

    /**
     * 步骤版本的图片标识符。
     */
    @Schema(description = "步骤版本的图片标识符")
    private Long imageId;

    /**
     * 构造函数，用于从 MissionStepVersion 对象初始化 StepVersionDTO。
     *
     * @param stepVersion MissionStepVersion 对象
     */
    public StepVersionDTO(MissionStepVersion stepVersion) {
        setId(stepVersion.getId());
        setTaskType(stepVersion.getTaskType());
        setTitle(stepVersion.getTitle());
        setDescription(stepVersion.getDescription());
        setScore(stepVersion.getScore());
        setConfigXml(stepVersion.getConfigXml());
        setOrder(stepVersion.getOrder());
        setImageId(stepVersion.getImageId());
    }
}
